<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Goertzel-Algorithmus</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Goertzel-Algorithmus"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.math.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Goertzel-Algorithmus rootpage-Goertzel-Algorithmus skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Goertzel-Algorithmus</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p>Der <b>Goertzel-Algorithmus</b> ist ein Verfahren aus der <a href="Digitale_Signalverarbeitung" title="Digitale Signalverarbeitung">digitalen Signalverarbeitung</a> und stellt eine besondere Form der <a href="Diskrete_Fourier-Transformation" title="Diskrete Fourier-Transformation">diskreten Fourier-Transformation</a> (DFT) dar. Im Gegensatz zu den verschiedenen schnellen Berechnungsmethoden bei der diskreten schnellen Fourier-Transformation <a href="Schnelle_Fourier-Transformation" title="Schnelle Fourier-Transformation">(FFT)</a>, die immer alle diskreten <a href="Frequenzspektrum" title="Frequenzspektrum">Spektral</a>komponenten in einem Block berechnen, ist es mit dem Goertzel-Algorithmus möglich, nur einzelne diskrete Spektralanteile zu berechnen. Entwickelt wurde der Algorithmus 1958 von Gerald Goertzel (1919–2002).
</p>
<div class="mw-heading mw-heading2"><h2 id="Funktion">Funktion</h2></div>
<p>Der Algorithmus basiert auf einer Struktur bestehend aus einem <a href="Digitales_Filter" class="mw-redirect" title="Digitales Filter">digitalen Filter</a>, das um eine Zustandssteuerung erweitert ist. Die Zustände unterteilen die Berechnung in den Rückwärtszweig, in dem die im Zeitbereich abgetasteten Eingangswerte geladen werden, und in einen Vorwärtszweig, der das Ausgangssignal liefert. Die Rückwärtsschleife wird bei jedem digitalen <a href="Abtastung_(Signalverarbeitung)" title="Abtastung (Signalverarbeitung)">Abtastwert</a> (<span style="font-style:normal;font-weight:normal"><a href="Englische_Sprache" title="Englische Sprache">englisch</a></span> <span lang="en-Latn" style="font-style:italic">sample</span>) durchlaufen und ist als ein <a href="Filter_mit_unendlicher_Impulsantwort" title="Filter mit unendlicher Impulsantwort">rekursives digitales Filter</a> mit zwei Zustandsspeichern und einem Akkumulator aufgebaut. Der Vorwärtszweig wird erst nach <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle N}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>N</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle N}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/f5e3890c981ae85503089652feb48b191b57aae3.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.064ex; height:2.176ex;" alt="{\displaystyle N}" loading="lazy"></span> Abtastwerten einmalig durchlaufen und liefert aus den Zustandsspeichern den berechneten <a href="Komplexe_Zahl" title="Komplexe Zahl">komplexen</a> Ausgangswert – nämlich die spektrale Komponente nach <a href="Betragsfunktion" title="Betragsfunktion">Betrag</a> und <a href="Komplexe_Zahl#Darstellung_von_komplexen_Zahlen_in_der_komplexen_Zahlenebene" title="Komplexe Zahl">Phase</a>.
</p><p>Durch die Wahl der dabei eingesetzten Filterkoeffizienten lässt sich die Frequenzselektivität einstellen. Durch die Wahl der Anzahl der Abtastwerte <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle N}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>N</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle N}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/f5e3890c981ae85503089652feb48b191b57aae3.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.064ex; height:2.176ex;" alt="{\displaystyle N}" loading="lazy"></span> lässt sich der <a href="G%C3%BCtefaktor" title="Gütefaktor">Gütefaktor</a> beeinflussen. <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle N}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>N</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle N}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/f5e3890c981ae85503089652feb48b191b57aae3.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.064ex; height:2.176ex;" alt="{\displaystyle N}" loading="lazy"></span> kann beliebige <a href="Nat%C3%BCrliche_Zahl" title="Natürliche Zahl">natürliche</a> Werte annehmen.
</p><p>Pro Spektralkomponente ist allerdings eine eigenständige Goertzel-Struktur notwendig. Daher ist dieser Algorithmus vor allem dann vorteilhaft und mit geringerem Rechenaufwand anwendbar, wenn nicht das komplette Spektrum berechnet werden soll, sondern nur einzelne Spektralkomponenten daraus.
</p><p>Ausführliche mathematische Herleitungen des Algorithmus finden sich in den unten angegebenen Literaturquellen.
</p>
<div class="mw-heading mw-heading2"><h2 id="Algorithmus">Algorithmus</h2></div>
<p>Von einem <a href="Digitalsignal" title="Digitalsignal">diskreten Signal</a> <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s_{i}(i=0,...,N)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>s</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>i</mi>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>i</mi>
<mo>=</mo>
<mn>0</mn>
<mo>,</mo>
<mo>.</mo>
<mo>.</mo>
<mo>.</mo>
<mo>,</mo>
<mi>N</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle s_{i}(i=0,...,N)}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/495e66f1878dceeb25d659cbe960c5383a0e9b3e.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:15.996ex; height:2.843ex;" alt="{\displaystyle s_{i}(i=0,...,N)}" loading="lazy"></span> wird der Realteil <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>C</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle C}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4fc55753007cd3c18576f7933f6f089196732029.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.766ex; height:2.176ex;" alt="{\displaystyle C}" loading="lazy"></span> und der Imaginärteil <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span> einer Spektralkomponente <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \omega }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>ω<!-- ω --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \omega }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/48eff443f9de7a985bb94ca3bde20813ea737be8.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.446ex; height:1.676ex;" alt="{\displaystyle \omega }" loading="lazy"></span> über einen <a href="Rekursion" title="Rekursion">rekursiven</a> <a href="Algorithmus" title="Algorithmus">Algorithmus</a> bestimmt.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Die Startbedingungen sind:
</p>
<dl><dd><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle U_{N+2}=U_{N+1}=0}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>U</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>N</mi>
<mo>+</mo>
<mn>2</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>U</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>N</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<mn>0</mn>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle U_{N+2}=U_{N+1}=0}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/1ba08cc7a1c8397efe312437027bfecd9b915a12.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:18.118ex; height:2.509ex;" alt="{\displaystyle U_{N+2}=U_{N+1}=0}" loading="lazy"></span></dd></dl>
<p>Über
</p>
<dl><dd><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle U_{k}=s_{k}+2\cdot U_{k+1}\cdot \cos \omega -U_{k+2}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>U</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>s</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>+</mo>
<mn>2</mn>
<mo>⋅<!-- ⋅ --></mo>
<msub>
<mi>U</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>⋅<!-- ⋅ --></mo>
<mi>cos</mi>
<mo><!-- --></mo>
<mi>ω<!-- ω --></mi>
<mo>−<!-- − --></mo>
<msub>
<mi>U</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
<mo>+</mo>
<mn>2</mn>
</mrow>
</msub>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle U_{k}=s_{k}+2\cdot U_{k+1}\cdot \cos \omega -U_{k+2}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/b6be90325096de330176d243dce086b40aa17e83.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:32.653ex; height:2.509ex;" alt="{\displaystyle U_{k}=s_{k}+2\cdot U_{k+1}\cdot \cos \omega -U_{k+2}}" loading="lazy"></span> für <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k=N,N-1,\dotsc ,1}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>k</mi>
<mo>=</mo>
<mi>N</mi>
<mo>,</mo>
<mi>N</mi>
<mo>−<!-- − --></mo>
<mn>1</mn>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<mn>1</mn>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle k=N,N-1,\dotsc ,1}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/d9d399811b34c7e55e4b173acb04d237fc54b73f.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:19.814ex; height:2.509ex;" alt="{\displaystyle k=N,N-1,\dotsc ,1}" loading="lazy"></span></dd></dl>
<p>ergibt sich:
</p>
<dl><dd><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C=s_{0}+U_{1}\cdot \cos \omega -U_{2}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>C</mi>
<mo>=</mo>
<msub>
<mi>s</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>0</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>U</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>⋅<!-- ⋅ --></mo>
<mi>cos</mi>
<mo><!-- --></mo>
<mi>ω<!-- ω --></mi>
<mo>−<!-- − --></mo>
<msub>
<mi>U</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle C=s_{0}+U_{1}\cdot \cos \omega -U_{2}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4af35e670162ff29127691fb380f595ecffc0849.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:24.597ex; height:2.509ex;" alt="{\displaystyle C=s_{0}+U_{1}\cdot \cos \omega -U_{2}}" loading="lazy"></span></dd>
<dd><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S=U_{1}\cdot \sin \omega }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
<mo>=</mo>
<msub>
<mi>U</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>⋅<!-- ⋅ --></mo>
<mi>sin</mi>
<mo><!-- --></mo>
<mi>ω<!-- ω --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S=U_{1}\cdot \sin \omega }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/c9d308988a190cabd96fae12723aac70444a4eec.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:13.607ex; height:2.509ex;" alt="{\displaystyle S=U_{1}\cdot \sin \omega }" loading="lazy"></span></dd></dl>
<p>Auf die <a href="Trigonometrische_Funktion" title="Trigonometrische Funktion">Winkelfunktionen</a> <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \cos \omega }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>cos</mi>
<mo><!-- --></mo>
<mi>ω<!-- ω --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \cos \omega }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/d37b8f211b8a478b2911ced89a0af37917bd7382.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:4.944ex; height:1.676ex;" alt="{\displaystyle \cos \omega }" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \sin \omega }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>sin</mi>
<mo><!-- --></mo>
<mi>ω<!-- ω --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \sin \omega }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/15d15b5c79e1d9202b1858c256210e0823aa4fe0.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:4.689ex; height:2.176ex;" alt="{\displaystyle \sin \omega }" loading="lazy"></span> muss dabei nur je einmal zugegriffen werden.
</p>
<div class="mw-heading mw-heading2"><h2 id="Aufwandsabschätzung"><span id="Aufwandsabsch.C3.A4tzung"></span>Aufwandsabschätzung</h2></div>
<p>Pro Berechnung einer Spektralkomponente sind beim Goertzel-Algorithmus <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 2N+2}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mn>2</mn>
<mi>N</mi>
<mo>+</mo>
<mn>2</mn>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle 2N+2}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/8b8cbf99a36de6fb12041396be88d4b07a0df912.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:7.229ex; height:2.343ex;" alt="{\displaystyle 2N+2}" loading="lazy"></span> Additionen/Subtraktionen und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle N+2}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>N</mi>
<mo>+</mo>
<mn>2</mn>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle N+2}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/3db42c3be909d30c95ffa429b595dda4ebac8e27.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:6.066ex; height:2.343ex;" alt="{\displaystyle N+2}" loading="lazy"></span> Multiplikationen notwendig.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Vergleicht man diesen Aufwand mit dem Berechnungsaufwand bei der <a href="Schnelle_Fourier-Transformation" title="Schnelle Fourier-Transformation">schnellen Fourier-Transformation</a> (FFT), ist der Goertzel-Algorithmus immer dann effizienter, wenn weniger als <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\tfrac {5}{6}}\cdot \log _{2}N}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mfrac>
<mn>5</mn>
<mn>6</mn>
</mfrac>
</mstyle>
</mrow>
<mo>⋅<!-- ⋅ --></mo>
<msub>
<mi>log</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
<mo><!-- --></mo>
<mi>N</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\tfrac {5}{6}}\cdot \log _{2}N}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/9a9508c5e4160fd97211ae31fff54f7a0a3bb63c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.338ex; width:9.814ex; height:3.676ex;" alt="{\displaystyle {\tfrac {5}{6}}\cdot \log _{2}N}" loading="lazy"></span> Spektralkomponenten berechnet werden sollen. Denn pro Spektralkomponente (bin) ist eine weitere Goertzelstruktur notwendig, während bei der schnellen Fourier-Transformation der Berechnungsaufwand nur mit <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle N\cdot \log _{2}N}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>N</mi>
<mo>⋅<!-- ⋅ --></mo>
<msub>
<mi>log</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
<mo><!-- --></mo>
<mi>N</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle N\cdot \log _{2}N}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/b48b2a3a2da2e42cf1d9d1adaab638eafeca3f5f.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:10.219ex; height:2.676ex;" alt="{\displaystyle N\cdot \log _{2}N}" loading="lazy"></span> ansteigt.
</p><p>Der Algorithmus kann effizient in <a href="Digitaler_Signalprozessor" title="Digitaler Signalprozessor">digitalen Signalprozessoren</a> implementiert werden.
</p>
<div class="mw-heading mw-heading2"><h2 id="Anwendungen">Anwendungen</h2></div>
<p>Die Anwendungen liegen in der Erkennung einzelner Frequenzen (<i>Tonerkennung</i>) in einem <a href="Signal#Signal_in_der_Nachrichtentechnik" title="Signal">Signal</a> wie beispielsweise bei der Erkennung der Signalisierungsfrequenzen bei dem im <a href="Telefon" title="Telefon">Telefonbereich</a> eingesetzten <a href="Mehrfrequenzwahlverfahren" title="Mehrfrequenzwahlverfahren">Mehrfrequenzwahlverfahren</a>. In diesem Fall muss nur der Betrag der Spektralkomponente ausgewertet werden, was weitere Vereinfachungen in der Berechnung gestattet.
</p>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li>Gerald Goertzel: <a rel="nofollow" class="external text" href="https://courses.cs.washington.edu/courses/cse466/12au/calendar/Goertzel-original.pdf"><i>An Algorithm for the Evaluation of Finite Trigonometric Series.</i></a> In: <i>American Math. Monthly.</i> Vol 65. 1958, S. 34–35.</li>
<li>Alan V. Oppenheim: <i>Zeitdiskrete Signalverarbeitung.</i> Oldenbourg Verlag, München 1999, ISBN 3-486-24145-1 (deutsche Übersetzung von <i>Discrete-Time Signal Processing</i>, Prentice Hall Inc. 1989)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://www.mathworks.com/help/toolbox/signal/ref/goertzel.html">Goertzel-Algorithmus</a> – Funktionsaufruf in <a href="MATLAB" class="mw-redirect" title="MATLAB">MATLAB</a> (englisch)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Gerald Goertzel: <cite style="font-style:italic">An Algorithm for the Evaluation of Finite Trigonometric Series</cite>. In: <cite style="font-style:italic">The American Mathematical Monthly</cite>. Vol. 65, No. 1. Nuclear Development Corporation of Americ,White Plains, N. Y. Januar 1958, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>34–35</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.2307/2310304">10.2307/2310304</a></span> (<a rel="nofollow" class="external text" href="https://courses.cs.washington.edu/courses/cse466/12au/calendar/Goertzel-original.pdf">washington.edu</a> [PDF]).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rfr_id=info:sid/de.wikipedia.org:Goertzel-Algorithmus&rft.atitle=An+Algorithm+for+the+Evaluation+of+Finite+Trigonometric+Series&rft.au=Gerald+Goertzel&rft.date=1958-01&rft.doi=10.2307%2F2310304&rft.genre=journal&rft.issue=No.+1&rft.jtitle=The+American+Mathematical+Monthly&rft.pages=34-35&rft.place=Nuclear+Development+Corporation+of+Americ%2CWhite+Plains%2C+N.+Y.&rft.volume=Vol.+65" style="display:none"> </span></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><a href="Karl-Dirk_Kammeyer" title="Karl-Dirk Kammeyer">Karl-Dirk Kammeyer</a>, Kristian Kroschel: <cite style="font-style:italic">Digitale Signalverarbeitung: Filterung und Spektralanalyse mit MATLAB-Übungen</cite>. Springer-Verlag, 2009, ISBN 978-3-8348-0610-9, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>274</span> (<a rel="nofollow" class="external text" href="https://books.google.de/books?id=hmC20iKv8CsC&pg=PA272&dq=goertzel+algorithmus&hl=de&sa=X&ved=0ahUKEwjwzJK3odbUAhVJEVAKHQIwDFQQ6AEIKTAA#v=onepage&q=goertzel%20algorithmus&f=false">google.de</a> [abgerufen am 24. Juni 2017]).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Goertzel-Algorithmus&rft.au=Karl-Dirk+Kammeyer%2C+Kristian+Kroschel&rft.btitle=Digitale+Signalverarbeitung%3A+Filterung+und+Spektralanalyse+mit+MATLAB-%C3%9Cbungen&rft.date=2009&rft.genre=book&rft.isbn=9783834806109&rft.pages=274&rft.pub=Springer-Verlag" style="display:none"> </span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-08-22" href="https://de.wikipedia.org/wiki/?title=Goertzel-Algorithmus&oldid=259094264">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>